<script setup lang="ts" name="Cart">
import Confirm from '@/components/XtxConfirm';
import Message from '@/components/XtxMessage';
import useStore from '@/store'
import { useRouter } from 'vue-router'
const router = useRouter()

const { cart } = useStore()

// 点了删除
const del = (id: string) => {
    // 提示用户是否删除
    Confirm({
        text: '删除商品后将无法恢复, 是否继续 ？',
        title: '温馨提示',
    }).then(() => {
        cart.delCart([id])
        Message.success('删除商品成功')
    }).catch(() => console.log('点了取消'))

}

// 复选框切换
const changeSelected = async (skuId: string, checked: boolean) => {
    await cart.updateCart(skuId, {
        selected: checked
    })
    Message.success('修改状态成功')
}

// 数量修改
const changeCount = (skuId: string, count: number) => {
    cart.updateCart(skuId, {
        count
    })
}

// 全选影响小选
const changeSelectedAll = (isSelected: boolean) => {
    cart.updateCartAllSelected(isSelected)
}

// 点了下单结算
const goCheckout = () => {
    if (cart.selectedListCounts <= 0) return Message.warning('请至少选择一件商品!')
    router.push('/member/checkout')
}
</script>

<template>
    <div class="xtx-cart-page">
        <div class="container">
            <XtxBread>
                <XtxBreadItem to="/">首页</XtxBreadItem>
                <XtxBreadItem>购物车</XtxBreadItem>
            </XtxBread>
            <div class="cart">
                <table v-if="cart.effectiveList.length !== 0">
                    <thead>
                        <tr>
                            <th width="120">
                                <XtxCheckbox :model-value="cart.isAllSelected" @update:model-value="changeSelectedAll">
                                    全选</XtxCheckbox>
                            </th>
                            <th width="400">商品信息</th>
                            <th width="220">单价</th>
                            <th width="180">数量</th>
                            <th width="180">小计</th>
                            <th width="140">操作</th>
                        </tr>
                    </thead>
                    <!-- 有效商品 -->
                    <tbody>
                        <tr v-for="item in cart.effectiveList" :key="item.skuId">
                            <td>
                                <XtxCheckbox :model-value="item.selected"
                                    @update:modelValue="changeSelected(item.skuId, $event)" />
                            </td>
                            <td>
                                <div class="goods">
                                    <!-- :to="`/goods/${item.id}`" -->
                                    <RouterLink to="">
                                        <img :src="item.picture" alt="" />
                                    </RouterLink>
                                    <div>
                                        <p class="name ellipsis">
                                            {{ item.name }}
                                        </p>
                                        <p class="attr">{{ item.attrsText }}</p>
                                    </div>
                                </div>
                            </td>
                            <td class="tc">
                                <p>&yen;{{ item.nowPrice }}</p>
                            </td>
                            <td class="tc">
                                <XtxNumber :model-value="item.count"
                                    @update:model-value="changeCount(item.skuId, $event)" :max="item.stock"
                                    :text="false" />
                            </td>
                            <td class="tc">
                                <p class="f16 red">&yen;{{ (Number(item.nowPrice) * item.count).toFixed(2) }}</p>
                            </td>
                            <td class="tc">
                                <p><a href="javascript:;">移入收藏夹</a></p>
                                <p><a @click="del(item.skuId)" href="javascript:;" class="green">删除</a></p>
                                <p><a href="javascript:;">找相似</a></p>
                            </td>
                        </tr>

                    </tbody>
                </table>
                <!-- 删除光购物车之后使用元素占位 ----------开始------>
                <div v-if="cart.effectiveList.length === 0" class="cart-none" style="text-align: center">
                    <div class="cart">
                        <img src="@/assets/images/none.png" alt="" />
                        <p>购物车内暂时没有商品</p>
                        <div class="btn" style="margin: 20px">
                            <XtxButton @click="router.push('/')" size="large" type="primary"> 继续逛逛 </XtxButton>
                        </div>
                    </div>
                </div>
                <!-- 删除光购物车之后使用元素占位 ----------开始------>
            </div>
            <!-- 操作栏 -->
            <div v-if="cart.effectiveList.length !== 0" class="action">
                <div class="batch"></div>
                <div class="total">
                    共 {{ cart.effectiveListCounts }} 件有效商品，已选择 {{ cart.selectedListCounts }} 件，商品合计：
                    <span class="red">¥{{ cart.selectedListPrice }}</span>
                    <XtxButton @click="goCheckout" type="primary">下单结算</XtxButton>
                </div>
            </div>
        </div>
    </div>
</template>

<style scoped lang="less">
.cart-none {
    height: 650px;
    display: flex;
    justify-content: center;

    .cart {
        margin-top: 100px;

        img {
            width: 350px;
        }
    }
}

.tc {
    text-align: center;

    .xtx-numbox {
        margin: 0 auto;
        width: 120px;
    }
}

.red {
    color: @priceColor;
}

.green {
    color: @xtxColor;
}

.f16 {
    font-size: 16px;
}

.goods {
    display: flex;
    align-items: center;

    img {
        width: 100px;
        height: 100px;
    }

    >div {
        width: 280px;
        font-size: 16px;
        padding-left: 10px;

        .attr {
            font-size: 14px;
            color: #999;
        }
    }
}

.action {
    display: flex;
    background: #fff;
    margin-top: 20px;
    height: 80px;
    align-items: center;
    font-size: 16px;
    justify-content: space-between;
    padding: 0 30px;

    .xtx-checkbox {
        color: #999;
    }

    .batch {
        a {
            margin-left: 20px;
        }
    }

    .red {
        font-size: 18px;
        margin-right: 20px;
        font-weight: bold;
    }
}

.tit {
    color: #666;
    font-size: 16px;
    font-weight: normal;
    line-height: 50px;
}

.xtx-cart-page {
    .cart {
        background: #fff;
        color: #666;

        table {
            border-spacing: 0;
            border-collapse: collapse;
            line-height: 24px;

            th,
            td {
                padding: 10px;
                border-bottom: 1px solid #f5f5f5;

                &:first-child {
                    text-align: left;
                    padding-left: 30px;
                    color: #999;
                }
            }

            th {
                font-size: 16px;
                font-weight: normal;
                line-height: 50px;
            }
        }
    }
}
</style>